/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package Mercado.controller;

import Mercado.model.Estoque;
import Mercado.model.Produto;
import java.awt.Color;
import java.util.List;
import javax.swing.*;

/**
 *
 * @author rafael
 */
public class Estoque_controller {
    private Estoque e;
    private JTable tabela;

    public Estoque_controller(Estoque e) {
        this.e = e;
    }
    
    public JTable geraTabela() {
        JTable tabela = new JTable();
        int i=0;
        try{
            List<Produto> pro = e.getProdutos();
            String[][] rowData;
            if(pro!=null){
                rowData = new String[pro.size()][4];
                for (Produto p: pro){
                    if(e.getQtdItens().get(pro.indexOf(p))>0){
                        rowData[i][0] = String.valueOf(p.getCodigo());
                        rowData[i][1] = p.getNome();
                        rowData[i][2] = "R$ "+String.valueOf(p.getPreco());
                        rowData[i][3] = String.valueOf(e.getQtdItens().get(pro.indexOf(p)));
                        i++;
                    }
                }
            }else
                rowData = new String[1][4];
            String[] columnNames = {"Código","Nome","Preço Unitário","Quantidade"};
            tabela = new JTable(rowData, columnNames);
        }catch(Exception ex){
            tabela = new JTable();
        }finally{
            tabela.setBounds(5, 25, 620, 365);
            tabela.setVisible(true);
            tabela.add(new JScrollBar(JScrollBar.VERTICAL));
        }
        return tabela;
    }
    
    public void atualizaTabela(JPanel lis){
                try{
                    lis.remove(4);
                }catch(ArrayIndexOutOfBoundsException ex){}
                lis.add(geraTabela());
    }
    
    public void alternaBotoes(JPanel pan){
        int i;
        for(i=2;i<8;i++)
            ((JTextField)pan.getComponent(i)).setEditable(((JRadioButton)pan.getComponent(i/6)).isSelected());
    }

    public Estoque getE() {
        return e;
    }

    public void setE(Estoque e) {
        this.e = e;
    }

    public void addProduto(JPanel aba) {
        if (((JRadioButton)aba.getComponent(0)).isSelected()){
            e.adicionaProduto(new Produto(
                                        ((JTextField)aba.getComponent(2)).getText(),
                                        Float.parseFloat(((JTextField)aba.getComponent(3)).getText()),
                                        Integer.parseInt(((JTextField)aba.getComponent(4)).getText())),
                                Integer.parseUnsignedInt(((JTextField)aba.getComponent(5)).getText())
            );
        }
        else if(((JRadioButton)aba.getComponent(1)).isSelected()){
            e.adicionaProdutoQtd(Integer.parseInt(((JTextField)aba.getComponent(6)).getText()),
                    Integer.parseUnsignedInt(((JTextField)aba.getComponent(7)).getText()));
        }
    }

    public void limpaTela(JPanel aba) {
        int i;
        for(i=2;i<8;i++)
            ((JTextField)aba.getComponent(i)).setText("");
    }

    public void cbRemoveTudo(JPanel aba) {
        ((JTextField)aba.getComponent(1)).setEditable(!((JCheckBox)aba.getComponent(2)).isSelected());
    }

    public void remProduto(JPanel aba) {
        if(((JCheckBox)aba.getComponent(2)).isSelected()){
            if(e.removeItem(Integer.parseInt(((JTextField)aba.getComponent(0)).getText()))){
                ((JLabel)aba.getComponent(3)).setText("Produto Removido!");
                ((JLabel)aba.getComponent(3)).setForeground(Color.green);
            }else{
                ((JLabel)aba.getComponent(3)).setText("Produto Inexistente!");
                ((JLabel)aba.getComponent(3)).setForeground(Color.red);
            }
        }
        else{
            if(e.removeItemQtd(Integer.parseInt(((JTextField)aba.getComponent(0)).getText()),
                    Float.parseFloat(((JTextField)aba.getComponent(1)).getText()))){
                ((JLabel)aba.getComponent(3)).setText("Quantidade Removida!");
                ((JLabel)aba.getComponent(3)).setForeground(Color.green);
            }else{
                ((JLabel)aba.getComponent(3)).setText("Produto Inexistente!");
                ((JLabel)aba.getComponent(3)).setForeground(Color.red);
            }
        }
    }
    
}
